package com.edu.commons;

import lombok.Data;

/**
 * @ProjectName: summer-project
 * @Titile: R
 * @Author: Lucky
 * @Description: 统一返回的数据结构
 */
@Data //生成setter和getter
public class R<T> {
    /*业务吗*/
    private int code;
    /*消息*/
    private String message;
    /*数据*/
    private T data;

    /**
     * 操作成功，不携带数据
     * @param message 消息
     * @return
     */
    public static R<Void> ok(String message){
        //创建返回对象
        R<Void> r = new R();
        //业务码赋值
        r.code = ServiceCode.OK.getCode();
        r.message = message;
        return r;
    }

    /**
     * 操作成功，要携带数据
     * @param message 消息
     * @return
     */
    public static <T> R<T>  ok(String message,T data){
        //创建返回对象
        R<T> r = new R();
        //业务码赋值
        r.code = ServiceCode.OK.getCode();
        r.message = message;
        r.data = data;
        return r;
    }

    /**
     * 出现异常，操作失败
     * @param e 业务异常类型
     * @return
     */
   public static R<Void>  fail(ServiceException e){
        //创建返回对象
        R<Void> r = new R();
        //业务码赋值
        r.code = e.getServiceCode().getCode();
        r.message = e.getMessage();
        return r;
    }
}
